Technical Field
The present invention relates in general to a system and method for managing software development. In particular, the present invention relates to a system and method for managing a source code repository and collecting metrics on the software development process.
Description of the Related Art
Software development is an error-prone, opaque process. The development process can involve managing multiple versions of hundreds of source code files while ensuring that the files can be built together as well as pass multiple tests. Often, multiple people are working on editing and adding and deleting files from the source code repository at the same time. Monitoring this process and ensuring the production of a high quality software product can be an overwhelming experience.
Many tools have been developed to assist in the management of the source code files and in the improvement of the overall quality of the software products. These tools, however, are typically very difficult to implement. The software development tools require great changes in the software development process, which is something many developers are reluctant to do. Many organizations (such as the Software Engineering Institute) have attempted to improve software management by adopting and recommending sets of rules and procedures. Developers, however, find these rules and procedures also very difficult to implement successfully.
The complexity involved in software development also makes the collection of useful metrics about the process extremely difficult. The collection of metrics can be used by developers in many useful ways such as assessing the performance of individual programmers, determining how difficult the development of a particular module might be, etc. Metrics can also be very useful in predicting time and cost associated with the development of a particular module or product.
What is needed, therefore, is a system and method that could more efficiently oversee the software development process, and at the same time, increase the overall quality of the software product. In addition, the system and method should provide an easy and efficient way to collect metrics on the software development process and should also provide a way to use those metrics to, among other things, assess the performance of programmers and predict time and cost of development.